package org.jeecg;

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
import java.util.TreeMap;

import org.springframework.util.DigestUtils;

import com.alibaba.fastjson.JSONObject;

public class   DyTest {
	public static void main(String[] args) {
		System.out.println("21-42(乙方)临沂市淮河流域重点平原洼地邳苍郯新片区治理工程(第二批)兰陵片区施工22标承包合同_临沂市淮河流域重点平原洼地邳苍郯新片区治理工程建设管理处、临沂市淮河流域重点平原洼地邳苍郯新片区治理工程兰陵县现场建设管理处_杨静20210914.pdf".length());
//		try {
//			Date date = new SimpleDateFormat("yyyyMMdd").parse("20210412");
//			System.out.println(date.getDate());
//			System.out.println(NumberUtil.isNumber("1.0.12"));
//		} catch (ParseException e) {
//			e.printStackTrace();
//		}
//		Date createTimeEnd = DateUtil.parseDate("2020-12-31");
//		//TODO 
//		Calendar calendar = CalendarUtil.calendar(createTimeEnd);
//		calendar.add(Calendar.DAY_OF_YEAR, 1);
//		createTimeEnd = calendar.getTime();
//		System.out.println(DateUtil.formatDate(createTimeEnd));
		
//		BigDecimal bd1 = new BigDecimal("199");
//		BigDecimal result1 = new BigDecimal("1");
//		for (int i = 0; i < 200; i++) {
//			result1 = result1.multiply(bd1);
//		}
//		
//		BigDecimal result2 = new BigDecimal("1");
//		BigDecimal bd2 = new BigDecimal("200");
//		for (int i = 0; i < 199; i++) {
//			result2 = result2.multiply(bd2);
//		}
//		System.out.println(result1.toPlainString());
//		System.out.println(result2.toPlainString());
//		System.out.println(result1.compareTo(result2));
//		
//		SalesDelivery d = new SalesDelivery();
//		d.setTotalAmount(BigDecimal.ZERO);
//		BigDecimal decimal = d.getTotalAmount();
//		decimal = BigDecimal.valueOf(12L).add(decimal);
//		System.out.println(d.getTotalAmount());
//		System.out.println(decimal);
//		
//		System.out.println(Boolean.valueOf("false"));
//		
//		System.out.println(PasswordUtil.encrypt("15269646858", "gang253600", "080cwRJY"));
		
//		BigDecimal dsd = new BigDecimal("1");
//		for (int i = 1; i <= 3248; i++) {
//			BigDecimal dd = new BigDecimal(i);
//			
//			dsd = dsd.multiply(dd);
//		}
//		System.out.println(dsd.toPlainString());
		
//		SortedMap <String, Object> params = new TreeMap <>();
//		 
//        params.put("mchId", 20000007L);
//        params.put("productId", 9000);
//        params.put("appId", "a7f754365cb646f79e7ce027b3ea200e");
//        params.put("notifyUrl", "http://www.baidu.com");
//        params.put("idNumber", "891910101011");
//        ArrayList<String> list = new ArrayList<String>();
//		for(Map.Entry<String,Object> entry:params.entrySet()){
//			if(null != entry.getValue() && !"".equals(entry.getValue())){
//				if(entry.getValue() instanceof JSONObject) {
//					list.add(entry.getKey() + "=" + getSortJson((JSONObject) entry.getValue()) + "&");
//				}else {
//					list.add(entry.getKey() + "=" + entry.getValue() + "&");
//				}
//			}
//		}
//		int size = list.size();
//		String [] arrayToSort = list.toArray(new String[size]);
//		Arrays.sort(arrayToSort, String.CASE_INSENSITIVE_ORDER);
//		StringBuilder sb = new StringBuilder();
//		for(int i = 0; i < size; i ++) {
//			sb.append(arrayToSort[i]);
//		}
//		String result = sb.toString();
//		result += "key=" + "BDSMYTQSH3KKVMWXEBUP1TNPNCR0XHZD596W9R7OTTUJUDG76BEUOHVQHYKVV0EOJ9DN89MW6Z95LFCRFCDSVLYMX2DZ2M7TPIHHGYFH0HFYMZFHM69AKEB7D4JTXGX5";
//		System.out.println("Sign Result:" + result);
//		result = md5(result, "UTF-8").toUpperCase();
//		System.out.println("Sign Result:" + result);
	}
	
	public static String getSortJson(JSONObject obj){
		SortedMap map = new TreeMap();
		Set<String> keySet = obj.keySet();
		Iterator<String> it = keySet.iterator();
		while (it.hasNext()) {
			String key = it.next().toString();
			Object vlaue = obj.get(key);
			map.put(key, vlaue);
		}
		return JSONObject.toJSONString(map);
	}
	
	public static String md5(String value, String charset) {
		MessageDigest md = null;
		try {
			byte[] data = value.getBytes(charset);
			md = MessageDigest.getInstance("MD5");
			byte[] digestData = md.digest(data);
			return toHex(digestData);
		} catch (NoSuchAlgorithmException e) {
			e.printStackTrace();
			return null;
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
			return null;
		}
	}
	
	public static String toHex(byte input[]) {
		if (input == null)
			return null;
		StringBuffer output = new StringBuffer(input.length * 2);
		for (int i = 0; i < input.length; i++) {
			int current = input[i] & 0xff;
			if (current < 16)
				output.append("0");
			output.append(Integer.toString(current, 16));
		}

		return output.toString();
	}
}
